package com.nado.extensions.data;

/**
 * {@link DataHandler} 생성에 필요한 정보를 제공하는 클래스
 *
 */
public class DataHandlerInfo {

	public static final String DEFAULT_NAME = "default";

	public static final String TYPE_DOM4J = "dom4j";
	public static final String TYPE_JAXP = "jaxp";

	/**
	 * DataHandler 의 외부 참조 이름
	 */
	private String name = DEFAULT_NAME;

	/**
	 * DataHandler가 처리하는 xml 파일의 위치
	 */
	private String location;

	/**
	 * 사용하고자 하는 DataHandler 의 종류
	 */
	private String type = TYPE_DOM4J;

	/**
	 * 데이터 캐시 기능의 상태를 설정한다.
	 */
	private boolean cached;

	public DataHandlerInfo() {}

	public DataHandlerInfo(String name) {
		this.name = name;
	}

	/**
	 * DataHandler 의 외부 참조 이름을 반환한다.
	 *
	 * @return 외부 참조 이름
	 */
	public String getName() {
		return name;
	}

	/**
	 * DataHandler 의 외부 참조 이름을 설정한다.
	 *
	 * @param name 외부 참조 이름
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * DataHandler가 참조하는 리소스의 위치를 반환한다.
	 *
	 * @return 리소스의 위치
	 */
	public String getLocation() {
		return location;
	}

	/**
	 * DataHandler가 참조하는 리소스의 위치를 설정한다.
	 *
	 * @param location 리소스의 위치
	 */
	public void setLocation(String location) {
		this.location = location;
	}

	/**
	 * DataHandler 의 종류를 반환한다.
	 */
	public String getType() {
		return type;
	}

	/**
	 * DataHandler 의 종류를 설정한다.
	 */
	public void setType(String type) {
		this.type = type;
	}

	/**
	 * caching 여부를 반환한다.
	 */
	public boolean isCached() {
		return cached;
	}

	/**
	 * caching 여부를 설정한다.
	 */
	public void setCached(boolean cached) {
		this.cached = cached;
	}

	public String toString() {
		return name + "=" + location + "[" + type + (cached ? ":cached" : "") + "]";
	}
}